package com.xayy.health.mgt.service;

import cn.kawins.mybatis.BaseService;
import com.github.pagehelper.PageInfo;
import com.xayy.health.mgt.model.HealthAssessResult;
import com.xayy.health.mgt.model.SatelliteNode;
import com.xayy.health.mgt.model.TelemetryData;
import com.xayy.health.mgt.model.dto.DataFeatureDto;
import com.xayy.health.mgt.model.dto.NodeDto;
import com.xayy.health.mgt.model.vo.SatelliteNodeTreeVo;

import java.util.List;
import java.util.Map;

/**
 * @author zhangxa
 */
public interface SatelliteNodeService extends BaseService<SatelliteNode> {

    /**
     * 新增拓扑图节点
     *
     * @param satelliteNode 卫星节点信息
     */
    void save(SatelliteNode satelliteNode);

    /**
     * 获取卫星拓扑图节点(拓扑图)
     * @param id 节点id
     * @return 拓扑节点信息
     */
    Map<String, Object> getList(Long id);

    /**
     * 获取卫星拓扑图节点(分页)
     * @param nodeDto 节点信息
     * @return 分页信息
     */
    PageInfo<SatelliteNode> pageList(NodeDto nodeDto);

    /**
     * 查询卫星节点信息集合
     *
     * @param id id信息
     * @return 结果日志
     */
    List<SatelliteNodeTreeVo> getSatelliteNodeList(Long id);

    /**
     * 判断节点是否有子节点
     * @param id id信息
     * @return 结果日志
     */
    boolean hasEdge(Long id);

    /**
     * 健康评估根据卫星id获取树结构
     * @param id 卫星id
     * @return 结果日志
     */
    SatelliteNodeTreeVo getDefRootId(Long id);

    /**
     * 健康评估获取树结构(外部接口)
     * @param node 卫星节点信息
     * @return 结果日志
     */
    SatelliteNodeTreeVo getDefRoot(SatelliteNode node);

    /**
     * 获取遥测信息
     * @param dataFeatureDto 入参信息
     * @return 结果日志
     */
    List<TelemetryData> getYcList(DataFeatureDto dataFeatureDto);

    /**
     * 获取树节点信息
     * @param node 节点信息
     * @return 结果日志
     */
    List<SatelliteNodeTreeVo> getTreeList(SatelliteNode node);

    /**
     * 故障评分规则表
     * @param node 节点信息
     * @return 结果日志
     */
    List<HealthAssessResult> getHealthRuleTable(SatelliteNode node);
}
